{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 决策树处理回归任务"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "实验内容\n",
    "1.\t使用sklearn.tree.DecisionTreeRegressor完成鲍鱼年龄预测问题\n",
    "2.\t计算最大深度为10的决策树，训练集上十折交叉验证的MAE和RMSE\n",
    "3.\t绘制最大深度从1到30，决策树在训练集和测试集上MAE的变化曲线\n",
    "4.  选择一个合理的树的最大深度，并给出理由"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1. 读取数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "data = np.loadtxt('data/Abalone.csv', delimiter = \",\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2.数据集划分"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.utils import shuffle\n",
    "data_shuffled = shuffle(data, random_state = 32)\n",
    "split_line = int(len(data_shuffled) * 0.7)\n",
    "training_data = data_shuffled[:split_line]\n",
    "testing_data = data_shuffled[split_line:]"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.导入模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.model_selection import cross_val_predict\n",
    "from sklearn.metrics import mean_absolute_error\n",
    "from sklearn.metrics import mean_squared_error"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.tree import DecisionTreeRegressor"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4.训练与预测"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.85\n",
      "2.68\n",
      "7.17\n"
     ]
    }
   ],
   "source": [
    "# YOUR CODE HERE\n",
    "model = DecisionTreeRegressor(max_depth = 10)\n",
    "x = training_data[:,0:-1]\n",
    "y = training_data[:,-1]\n",
    "prediction = cross_val_predict(model,x,y,cv = 10)\n",
    "\n",
    "mae = round(mean_absolute_error(y, prediction),2)\n",
    "rmse = round(mean_squared_error(y, prediction) ** 0.5,2)\n",
    "mse = round(mean_squared_error(y, prediction),2)\n",
    "\n",
    "print(mae)\n",
    "print(rmse)\n",
    "print(mse)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###### 最大深度为10\n",
    "全量特征的决策树，十折交叉验证指标\n",
    "\n",
    "MAE|RMSE|MSE\n",
    "-|-|-\n",
    "1.84|2.66|7.17"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5. 改变最大深度，绘制决策树的精度变换图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "绘制最大深度从1到30，决策树训练集和测试集MAE的变化图"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "plt.style.use(\"fivethirtyeight\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x206b9fd2f70>"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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GDduHPR6PV5//XWLq+Wz3b9/3zwOuSDat2+Prl27IioqCn/88QcAU7hv164dtmzZgt9//z3HOXAvXbqEmzdvmh+PGDECAPD5559bTBeVkpKCr776qsD1ZCvKZ2/nzp05tsvuJc3+3Fy7dg1nz561avfgwQOkpqZCpVKZxwQPGzYMGo0GixYtshjzCwBz5szBnTt30KNHD/j6+hb6NRJR/jiEgIjMF+TIsmy+qn7//v0Wt5INCgqy2GbSpEk4e/YsFi9ejG3btqFjx47w9/dHXFwcrl69isjISPz73/82X23t4eGBX3/9FaNHj8aQIUPQuXNnNG3aFKmpqbh48SL27NmTZ+/hnTt30L17d9SpUwchISHw9/dHamoqtm/fjsuXL6N///6oXbt2nq9z3LhxCA8PR3h4ONq2bYuePXtCr9dj48aNuHPnDkaMGGE1hZYtqNVqLFmyBEOGDMHIkSPRokULNG3aFE5OTrh9+zZOnjyJqKgo7N692zzkYdSoUThx4gR++eUXhISEoGvXrggICEBycjJu3LiBiIgIdO7c2RxGC2LatGn4559/MHv2bAwbNgx2dnZYuHAhBg4ciLfeegvz589Hy5Yt4e7ujjt37uD8+fM4efIklixZYp7/9Nlnn8WaNWsQHh6OsLAw9OnTBwaDwTyl1YULF8xX/xdUYT9706ZNw40bN9CuXTsEBATA3t4eZ86cwT///AMPDw+MGTMGAHD69Gk899xzaNKkCYKDg+Hr64ukpCT89ddfSExMxLhx4+Dk5AQACAgIwOzZs/HOO++gc+fOGDRoEHx8fHDgwAHs27cP/v7++Prrrwv1uoio4Bhgich8MYxarYazszP8/PwwcOBA9O3bF7169cpxXKlKpcLixYuxevVqLF26FH///bf5AqHq1avj7bffNve+ZevWrRt27tyJb7/9Frt27cKePXvMp/bzuxlAQEAA3nvvPezZswf79u1DXFwc3NzcEBQUhLfeesviDla50Wg0WLNmDebNm4eVK1di4cKFEEURDRo0wNSpU61uDGBLwcHB2LdvH+bNm4ctW7Zg2bJlUBQFPj4+qF+/PsaPH486depYbPPFF1+gR48eWLRoEfbu3YvExES4ubnBz88PL774Ip555plC1dCsWTP069cPmzZtwqJFi/D666/D19cXO3bswIIFC7B+/XqsXr0aer3efHer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4lSgALtt2zbcvXvXYllaWs6/mC9evIgffviheKojKuNCqmiwo7833mvmAvVjP01JOgWv7UnEsL/jceuBwTYFEhERVUAFCrAjRozAnj17zI8TEhJQrVo17N6926rt8ePHMX369OKrkKiM00gCJoe4YtcAb4RWUVut//t2JsLWxeC386mQ2RtLRET0xAoUYHPqaeVpUSJLwe5qbOvrhU9auML+sRm37usVvL0/CQO3xuFqCntjiYiIngTHwBIVI5UoYHxjF+wd6I0wH43V+j13dWi3Pgarr6TZoDoiIqKKgQGWqATUdlNjc+8q+LKNG5xUllMVpBkUvLgrEXNP3eeZDCIioiJggCUqIaIg4KUGzogY5I3OfnZW6z84nIKpB5JhlBliiYiICsN6/p9cXLt2DUeOHAEApKSkAACioqLg7Oxs0e7q1avFWB5R+RfoosKaHp74/WIaJkUmQS8/XDf/XCqi04z4paMH7FWP3+OLiIiIclLgADtz5kzMnDnTYtnkyZOt2imKAkHgL2KiRwmCgLH1nFDTRcLz2xOQon/Y67rhegZit8Xhj66ecLfjSREiIqL8FCjA/vjjjyVdB1Gl8JSfPbb08cIzf8chOu1hV+z+ezr02hyLVT08EeBc4L8riYiIKqUC/aYcOXJkSddBVGk08jBNt/XM3/E4n/RwSq0LyQb02BSLld090cTTegYDIiIiMinW85UGgwGbN2/G2LFji3O3RBVOdWcVtvbxQtvHptq6my6j759x2Hknw0aVERERlX3Fcq4yMjISK1euxLp165CYmAg7O+srronIktZOxJoeVfDqnkSsu5ZuXn5fr2Dotnj82MEdw2s52rBCIiKisqnIATYqKgorVqzAqlWrcPPmTXh4eKBnz57o1asXunbtWpw1ElVY9ioBv3Zyh+9BEfPOppqXGxTgld2JuJNqxP81duaFkURERI8oVICNjY3F//73P6xcuRInTpyAs7Mz2rVrh5s3b+L7779Hnz59SqpOogpLFATMbK2Fv5OEaYdSLNZ9dCQFt1ONmN3aDZLIEEtERAQUMMCuXLkSK1euxM6dO6FSqdC9e3f83//9H3r16oW7d+9i69atJV0nUYX3RiMX+DlKeHVPInSPzBW78LxprtiFT3nAgXPFEhERFSzAvvLKKwgMDMT333+Pfv36wdXV1byOpzaJis+QIEd4OUgY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\n",
      "text/plain": [
       "<Figure size 720x360 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# YOUR CODE HERE\n",
    "train_result = []\n",
    "test_result = []\n",
    "\n",
    "for i in range(30):\n",
    "    model = DecisionTreeRegressor(max_depth = i + 1)\n",
    "    model.fit(training_data[:,0:-1],training_data[:,-1])\n",
    "    prediction1 = model.predict(training_data[:,0:-1])\n",
    "    prediction2 = model.predict(testing_data[:,0:-1])\n",
    "    train_result.append(mean_absolute_error(prediction1, training_data[:,-1]))\n",
    "    test_result.append(mean_absolute_error(prediction2, testing_data[:,-1]))\n",
    "\n",
    "depth = np.linspace(1,30,30)\n",
    "\n",
    "plt.figure(figsize = (10, 5))\n",
    "plt.plot(depth,train_result, '-', label = 'training data')\n",
    "plt.plot(depth,test_result, '-', label = 'testing data')\n",
    "plt.xlabel(\"max_depth\")\n",
    "plt.ylabel('MAE')\n",
    "plt.title(\"DecisionTreeRegressor\")\n",
    "plt.legend()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在训练集中，随着最大深度的增大,mae值变小,模型在训练集上的预测效果越来越好,但模型在训练集上表现的过好会导致模型的过拟合,所以在测试集上随着最大深度的增大,mae值趋势是变大的,说明从深度10开始模型出现了过拟合的情况,可见最大深度选10比较好。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
